/**
 * Created by Daphne on 2016/4/19.
 */
;(function($){
    $.fn.jquerySlider = function(o){
        o = $.extend({
            auto: true, //是否自动播放
            parent:'.sliderBar',
            pageList:'.pageList', //分页按钮集合
            prev: '', //上一页
            next: '', //下一页
            speed: 500, // 播放速度
            time: 2000, //定时器时间
            isResize: false,
            view: 1,
            pageNumText:false,
            hoverAuto:'',
            flag: true //默认从右往左播放
        },o||{});

        return this.each(function(){
            var _this = $(this),_parent = $(o.parent, _this),_list = _parent.children(),_len = _list.length,_view = o.view,
                _w=_list.eq(0).width(),_wStart,_wOuter=Math.ceil(_list.eq(0).outerWidth(true)),_pageList=$(o.pageList, _this),
                _prev = o.prev, _next = o.next,_pageNumText = o.pageNumText,_posLeft = [],_start = [],autoChange;
            //页面初始化
            into();
            //点击分页按钮
            _pageList.on('click',function(){
                var len = $(this).index()+1;

                var index = $.inArray(0,  _posLeft) + 1; //找出点击之前停留在那张索引上
                var pagination = index - ($(this).index() + 1);

                while(pagination != 0) {
                    if(pagination < 0) {
                        clearInterval(autoChange);//清除定时器
                        change(true);
                        pagination++;
                    } else if(pagination > 0) {
                        clearInterval(autoChange);//清除定时器
                        change(false);
                        pagination--;
                    }
                }
                if(_pageNumText){
                    $('#new_hot_num').text( len +'/'+_len);
                }
            });
            //点击上一页，下一页
            if(_prev || _next){
                $(_prev+','+ _next).click(function(){
                    clearInterval(autoChange);//清除定时器
                    $(this).is(_prev) ? change(false) : change(true);
                });
            }
            //是否自适应
            if(o.isResize){
                $(window).on('resize',fitWidth);
            }
            //初始化数据
            function into(){
                 _wStart = _w;
                 _w = _view != 1? _wOuter : _w;
                if(_pageNumText){
                    $('#new_hot_num').text(1+'/'+_len);
                }
                for(var i = 0; i < _len; i++){
                    _start[i] = i * _w;
                    _posLeft[i] = _start[i];
                    _list.eq(i).css({
                        'position': 'absolute',
                        'float': 'none',
                        'display':'block',
                        'top': '0',
                        'left': _start[i]+'px',
                        'width': _wStart+'px'
                    });
                }
            }
            //切换过程
            function change(flag){
                if(flag){ //正方向
                    var temp = _view != 1 ? 0 : 1;
                    for(var i = 0; i < _len; i++){
                        if(temp == 0){
                            if(_posLeft[i] <= -_w){  //循环正方向轮播
                                _posLeft[i] = _w * (_len-1);
                                _list.eq(i).css({'left': _posLeft[i]+'px'});
                            }
                            _posLeft[i] -= _w;
                        }
                        else{
                            if(_posLeft[i] <=  -_w * (_len-1)){  //循环正方向轮播
                                _posLeft[i] = _w * _view;
                                _list.eq(i).css({'left': _posLeft[i]+'px'});
                            }
                            _posLeft[i] -= _w;
                        }
                        if(_posLeft[i] == 0){
                            _pageList.eq(i).addClass('zq-act').siblings().removeClass('zq-act');
                            if(_pageNumText){
                                $('#new_hot_num').text((i+1)+'/'+_len);
                            }
                        }
                        _list.each(function (i) {
                            $(this).stop(true).animate({"left":  _posLeft[i]  + "px"}, o.speed);
                        });
                    }
                } else {//反方向
                    for(var j = 0; j < _len; j++){
                        if(_posLeft[j] >=  _w * (_len-1) ){  //循环正方向轮播
                            _posLeft[j] = -_w;
                            _list.eq(j).css({'left': _posLeft[j]+'px'});
                        }
                        _posLeft[j] += _w;
                        if(_posLeft[j] == 0){
                            _pageList.eq(j).addClass('zq-act').siblings().removeClass('zq-act');
                            if(_pageNumText){
                                $('#new_hot_num').text((j+1)+'/'+_pageList.length);
                            }
                        }
                        _list.each(function (i) {
                            $(this).stop(true).animate({"left":  _posLeft[i]  + "px"}, o.speed);
                        });
                    }
                }
            }

            //适配宽度
            function fitWidth(){
                var old = _w;
                _w = $(window).width();
                _w = _w < 1265 ? 1265 : _w;
                for(var i = 0; i < _len; i++){
                    _posLeft[i] = _posLeft[i]/ old * _w;
                    _start[i] = _start[i] / old * _w;
                    _list.eq(i).css({
                        'left': _posLeft[i]+'px',
                        'width': _w+'px'
                    });
                }
            }
            //根据view判断_list长度 是否改切换
            var auto = o.auto;
            if(_view >= _len){
                o.auto = false;
                $(_prev).addClass('f-dhid');
                $(_next).addClass('f-dhid');
            }else{
                o.auto = auto;
                $(_prev).removeClass('f-dhid');
                $(_next).removeClass('f-dhid');
            }
            //是否自动播放(自动定时器)
            if( !o.auto ) return;
            isAuto();
            //设置定时器
            function isAuto(){
                autoChange = setInterval(function () {change(o.flag);}, o.time);
            }
            //鼠标移近移除时间
            if(o.hoverAuto){
                $(o.hoverAuto).hover(function(){
                    clearInterval(autoChange);
                },function(){
                    isAuto();
                });
            }





        });
    }
})(jQuery);

